package com.atguigu.springbootdemo.bean;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.concurrent.TimeUnit;

/*
定时调度：
    crontab:功能简单
    dolphinscheduler:太复杂
    springBoot:帮你做自动调度
 */
//@Component
//public class MyTask {
//    private int num;
//    /*
//    cron:传入一个crontab表达式，按照表达式定义的周期定时调度
//        每5s执行一次
//    zone:指定开始的时间是哪个时区的
//    fixedDelay:前一次调度结束后，间隔多久，开始下一次调度
//    fixedRate:前一次调度开始后，间隔多久，开始下一次调度
//            上一次没有执行完，就该调度了，此时会阻塞，等上一次执行完，再开始。
//    initalDelay: app启动后，第一次调度时，先延迟多久
//    TimeUnit timeUnit: 指定调度时间单位，默认毫秒
//     */
//    //@Scheduled(cron = "*/5 * * * * *")
//    @Scheduled(initialDelay = 5,fixedRate =  2,zone = "Asia/Shanghai",timeUnit = TimeUnit.SECONDS)
//    public void execute() throws InterruptedException {
//        System.out.println(++num + "开始时的时间:" + LocalDateTime.now());
//        Thread.sleep(3000);
//        System.out.println(num + "结束时的时间:" + LocalDateTime.now());
//    }
//}



/*
定时调度：
    crontab:功能简单
    dolphinScheduler:太复杂
    springBoot：帮你做自动调度
 */
//@Component
//public class MyTask {
//    private int  num;
//
//    /*
//    cron:传入一个crontab表达式，按照表达式定义的周期定时调度
//        每5s执行一次
//    zone:指定开始的时间是哪个时区
//    fixedDelay:前一次调度结束后，间隔多久，开始下一次调度
//    fixedRate:前一次调度开始后，间隔多久，开始下一次调度
//            上一次没执行完，就该调度了，此时会阻塞，等上一次执行完，再开始
//    initalDelay:app启动后，第一次调度时，先延迟多久
//    TimeUnit timeUnit:指定调度时间的单位，默认毫秒
//     */
//    //@Scheduled(cron = "*/5 * * * * *")
//    @Scheduled(initialDelay = 5,fixedDelay = 2,fixedRate = 5,zone = "Asia/Shanghai",timeUnit = TimeUnit.SECONDS)
//    public void execute() throws Exception {
//        System.out.println(++num + "开始时的时间:" + LocalDateTime.now());
//        Thread.sleep(3000);
//        System.out.println(num + "结束时的时间:" + LocalDateTime.now());
//    }
//}

















